\chapter{Prototyp Analyse}
Die im Kapitel \ref{prototyp-spezifikation} ("`Prototyp Spezifikation'') definierten Zeitmessungen sollen in diesem Kapitel aufgeführt und die verschiedenen Resultate der jeweiligen Prototypen sollen miteinander Verglichen werden. Zur Erinnerung werden die definierten Ziele an dieser Stelle noch einmal aufgeführt:

Für jedes ausgewählte Framework soll der selbe Prototyp entwickelt werden. Folgende Ziele sollen mit der Entwicklung des Prototyps erreicht werden:

\begin{enumerate}
	\item Messung der Zeit, die eine Nachricht vom Server bis zu einem Client braucht
	\item Messung der Zeit, die eine Nachricht vom Client bis zum Server braucht
	\item Messung des Zeitunterschiedes zwischen Erhalten der Nachricht vom ersten Client bis zum Erhalt der Nachricht des letzten Clients
\end{enumerate}

Für Ziel 1 und Ziel 2 können die im Browser und Serverkonsole ausgegebenen Werte der Prototypen direkt abgelesen und analysiert werden. Für das dritte Ziel wird das Netzwerkanalysetool "`Wireshark'' \cite{wireshark} gebraucht. Mit Wireshark wird die Zeitspanne gemessen, in welcher der Server die Nachrichten an alle Clients verschickt. Für Ziele 1-3 wurde vor jeder Messung Server und Browser neu gestartet.

Streamhub benutzt standardmässig die Transportmethode "`HTML 5 Websockets''. In der Streamhub-Dokumentation wurden keine Angaben über Konfiguration der Transportmethoden gefunden. Einzig die neuste Version der Browser \textit{Safari} und \textit{Google Chrome} unterstützen "`HTML 5 Websockets''. Aus diesem Grund wurden für die gesamten Tests nur diese zwei Browser verwendet, damit die Testresultate miteinander verglichen werden können. Für die anderen beiden Prototypen wurden die Standardkonfiguration der Transportmethode beibehalten. APE's Standard-Transportmethode ist Long-Polling und Beim Framework Gwt-comet ist unklar welche Transportmethode verwendet wird.

\newpage


\section{Ziel 1: Server zu Client}
\subsection{GWT \& Streamhub}
\subsubsection{Safari Version 5.0.5 (6533.21.1)}




\begin{tabular}{|l|l|}
\hline Timer-Tick  & Zeitunterschied [\textit{ms}] \\ 
\hline 1 & 2 \\
\hline 2 & 1 \\
\hline 3 & 1 \\
\hline 4 & 1 \\
\hline 5 & 1 \\
\hline 6 & 1 \\
\hline 7 & 1 \\
\hline 8 & 1 \\
\hline 9 & 2 \\
\hline 10 & 1 \\
\hline \textbf{Durchschnitt}  & \textbf{1.2} \\ 
\hline 
\end{tabular} 

\subsubsection{Google Chrome Version 11.0.696.68}
\begin{tabular}{|l|l|}
\hline Timer-Tick  & Zeitunterschied [\textit{ms}] \\ 
\hline 1 & 1 \\
\hline 2 & 1 \\
\hline 3 & 1 \\
\hline 4 & 1 \\
\hline 5 & 1 \\
\hline 6 & 1 \\
\hline 7 & 1 \\
\hline 8 & 0 \\
\hline 9 & 1 \\
\hline 10 & 1 \\
\hline \textbf{Durchschnitt}  & \textbf{0.9} \\ 
\hline 
\end{tabular} 
\\[2cm]
\textbf{Gesamtdurchschnitt: \uuline{1.05 \textit{ms}}}





\subsection{APE}
\subsubsection{Safari Version 5.0.5 (6533.21.1)}
\begin{tabular}{|l|l|}
\hline Timer-Tick  & Zeitunterschied [\textit{ms}] \\ 
\hline 1 & 17 \\
\hline 2 & 16 \\
\hline 3 & 17 \\
\hline 4 & 17 \\
\hline 5 & 16 \\
\hline 6 & 17 \\
\hline 7 & 18 \\
\hline 8 & 18 \\
\hline 9 & 17 \\
\hline 10 & 18 \\
\hline \textbf{Durchschnitt}  & \textbf{17.1} \\ 
\hline 
\end{tabular} 



\subsubsection{Google Chrome Version 11.0.696.68}
\begin{tabular}{|l|l|}
\hline Timer-Tick  & Zeitunterschied [\textit{ms}] \\ 
\hline 1  & 27 \\
\hline  2 & 28 \\
\hline  3 & 28 \\
\hline  4 & 28 \\
\hline  5 & 27 \\
\hline  6 & 27 \\
\hline  7 & 28 \\
\hline  8 & 27 \\
\hline  9 & 27 \\
\hline  10 & 27 \\
\hline \textbf{Durchschnitt}  & \textbf{27.4} \\ 
\hline 
\end{tabular} 
\\[2cm]
\textbf{Gesamtdurchschnitt: \uuline{22.25 \textit{ms}}}


\subsection{Gwt-comet}
\subsubsection{Safari Version 5.0.5 (6533.21.1)}
\begin{tabular}{|l|l|}
\hline Timer-Tick  & Zeitunterschied [\textit{ms}] \\ 
\hline 1  & 20 \\
\hline  2 & 2 \\
\hline  3 & 2 \\
\hline  4 & 1 \\
\hline  5 & 1 \\
\hline  6 & 1 \\
\hline  7 & 2 \\
\hline  8 & 1 \\
\hline  9 & 1 \\
\hline  10 & 2 \\
\hline \textbf{Durchschnitt}  & \textbf{3.3} \\ 
\hline 
\end{tabular} 


\subsubsection{Google Chrome Version 11.0.696.68}
\begin{tabular}{|l|l|}
\hline Timer-Tick  & Zeitunterschied [\textit{ms}] \\ 
\hline 1  & 25 \\
\hline  2 & 3 \\
\hline  3 & 2 \\
\hline  4 & 2 \\
\hline  5 & 2 \\
\hline  6 & 31 \\
\hline  7 & 2 \\
\hline  8 & 2 \\
\hline  9 & 2 \\
\hline  10 & 3 \\
\hline \textbf{Durchschnitt}  & \textbf{7.4} \\ 
\hline 
\end{tabular} 
\\[2cm]
\textbf{Gesamtdurchschnitt: \uuline{5.35 \textit{ms}}}

\subsection{Vergleich}
Mit 1.05 \textit{ms} ist das Streamhub-Framework mit Abstand am schnellsten für die Übertragung von Server zu Client. Die Übertragung ist rund zwanzig mal schneller als jene von APE. Die exakten Gründe für diesen wesentlichen Zeitunterschied wurden im Rahmen dieses Projektes nicht erforscht. Eine Optimierung und Komprimierung des JavaScript-Codes auf Seite des APE-Clients, könnte das Resultat evtl. verbessern. Grund für die schnelle Übertragung von Streamhub könnte unter anderem auch "`HTML 5 Websockets'' sein. Dies bleibt aber definitiv eine hypothetische Aussage und wird in diesem Dokument nicht weiter begründet.

Bei den Messungen des Gwt-comet-Prototyps fällt auf, dass jeweils die erste Nachricht rund zehn mal länger für die Übertragung gebraucht hat als die darauf folgenden Nachrichten. Dies hat unserer Meinung nach mit der Anmeldung des Clients am Server zu tun.

\newpage

\section{Ziel 2: Client zu Server}
\subsection{GWT \& Streamhub}
\subsubsection{Safari Version 5.0.5 (6533.21.1)}
\begin{tabular}{|l|l|}
\hline Timer-Tick  & Zeitunterschied [\textit{ms}] \\ 
\hline 1  & 12 \\
\hline  2 & 1 \\
\hline  3 & 0 \\
\hline  4 & 1 \\
\hline  5 & 1 \\
\hline  6 & 1 \\
\hline  7 & 0 \\
\hline  8 & 0 \\
\hline  9 & 1 \\
\hline  10 & 1 \\
\hline \textbf{Durchschnitt}  & \textbf{1.8} \\ 
\hline 
\end{tabular} 


\subsubsection{Google Chrome Version 11.0.696.68}
\begin{tabular}{|l|l|}
\hline Timer-Tick  & Zeitunterschied [\textit{ms}] \\ 
\hline 1  & 14 \\
\hline  2 & 1 \\
\hline  3 & 1 \\
\hline  4 & 1 \\
\hline  5 & 1 \\
\hline  6 & 1 \\
\hline  7 & 1 \\
\hline  8 & 1 \\
\hline  9 & 1 \\
\hline  10 & 1 \\
\hline \textbf{Durchschnitt}  & \textbf{2.3} \\ 
\hline 
\end{tabular} 
\\[2cm]
\textbf{Gesamtdurchschnitt: \uuline{2.05 \textit{ms}}}


\subsection{APE}
\subsubsection{Safari Version 5.0.5 (6533.21.1)}
\begin{tabular}{|l|l|}
\hline Timer-Tick  & Zeitunterschied [\textit{ms}] \\ 
\hline 1  & 3 \\
\hline  2 & 3 \\
\hline  3 & 5 \\
\hline  4 & 4 \\
\hline  5 & 3 \\
\hline  6 & 5 \\
\hline  7 & 3 \\
\hline  8 & 3 \\
\hline  9 & 3 \\
\hline  10 & 3 \\
\hline \textbf{Durchschnitt}  & \textbf{3.5} \\ 
\hline 
\end{tabular} 


\subsubsection{Google Chrome Version 11.0.696.68}
\begin{tabular}{|l|l|}
\hline Timer-Tick  & Zeitunterschied [\textit{ms}] \\ 
\hline 1  & 1 \\
\hline  2 & 2 \\
\hline  3 & 1 \\
\hline  4 & 1 \\
\hline  5 & 1 \\
\hline  6 & 2 \\
\hline  7 & 1 \\
\hline  8 & 1 \\
\hline  9 & 1 \\
\hline  10 & 1 \\
\hline \textbf{Durchschnitt}  & \textbf{1.2} \\ 
\hline 
\end{tabular} 
\\[2cm]
\textbf{Gesamtdurchschnitt: \uuline{2.35 \textit{ms}}}

\subsection{Gwt-comet}
\subsubsection{Safari Version 5.0.5 (6533.21.1)}
\begin{tabular}{|l|l|}
\hline Timer-Tick  & Zeitunterschied [\textit{ms}] \\ 
\hline 1  & 14 \\
\hline  2 & 5 \\
\hline  3 & 5 \\
\hline  4 & 8 \\
\hline  5 & 8 \\
\hline  6 & 7 \\
\hline  7 & 8 \\
\hline  8 & 7 \\
\hline  9 & 8 \\
\hline  10 & 7 \\
\hline \textbf{Durchschnitt}  & \textbf{7.7} \\
\hline 
\end{tabular} 




\subsubsection{Google Chrome Version 11.0.696.68}
\begin{tabular}{|l|l|}
\hline Timer-Tick  & Zeitunterschied [\textit{ms}] \\ 
\hline 1  & 40 \\
\hline  2 & 3 \\
\hline  3 & 3 \\
\hline  4 & 3 \\
\hline  5 & 4 \\
\hline  6 & 3 \\
\hline  7 & 3 \\
\hline  8 & 2 \\
\hline  9 & 3 \\
\hline  10 & 2 \\
\hline \textbf{Durchschnitt}  & \textbf{6.6} \\ 
\hline 
\end{tabular} 
\\[2cm]
\textbf{Gesamtdurchschnitt: \uuline{7.15 \textit{ms}}}


\subsection{Vergleich}
Bei den Zeitmessungen von Ziel 2 ist Gwt-comet mit 7.15 \textit{ms} der klare Verlierer. APE und Streamhub liegen mit 2.35 \textit{ms} bzw. 2.05 \textit{ms} nahe zusammen.


\section{Ziel 3: Zeitspanne des Sendens}
Die Messungen für Ziel 3 wurden mit \textbf{zehn am Server angemeldeten Clients} durchgeführt. Dafür wurden in Safari und Chrome jeweils fünf Tabs geöffnet, über welche die entsprechende Server-URL aufgerufen wurde. 

Wireshark ermöglicht es ein Paket zu markieren, welches als relative Zeitreferenz gelten soll. Somit kann die Zeit zwischen dem ersten und letzten Paket herausgelesen werden.

\subsection{GWT \& Streamhub}
Der Zeitunterschied betrug bei der Messung des GWT-Streamhub-Prototyps 0.000641 Sekunden, was \textbf{0.64 Millisekunden} entspricht.

\EPSFIGSCALE[0.6]{figures/wireshark-streamhub.jpg}{Screenshot der Wireshark-Messung}{wireshark1} 

\subsection{APE}
Der Zeitunterschied betrug bei der Messung des APE-Prototyps 0.00017 Sekunden, was \textbf{0.17 Millisekunden} entspricht.

\EPSFIGSCALE[0.6]{figures/wireshark-ape.jpg}{Screenshot der Wireshark-Messung}{wireshark2} 




\section{Gwt-comet}
Bei der Messung des Gwt-comet-Prototypen stellte sich heraus, dass dieser nur mit maximal einem Tab pro Browser funktioniert. Sobald in den beiden Browsern die jeweils fünf Tabs offen waren und der Timer-Knopf gedrückt wurde, Stürzten diese umgehend ab. Die Wireshark-Messung wurde ca. nach einer Sekunde gestoppt. \textbf{In dieser Sekunde wurden 82424 Netzwerkbewegungen gemessen}. Dies deutet auf eine unendliche Schlaufe auf Seite des Servers hin. Ziel 3 des Gwt-comet-Prototypen konnte deshalb nicht erreicht werden. Solange jedoch nur ein Tab pro Browser offen ist, funktioniert der Prototyp einwandfrei.


\subsection{Vergleich}
APE und Streamhub liegen bei den Messungen von Ziel 3 mit 0.17 \textit{ms} bzw. 0.64 \textit{ms} beide unter einer Millisekunde. APE ist bei dieser Messung etwa vier mal schneller als Streamhub. Erstaunlich ist, dass ein Java-Server (Streamhub) mit einem C-Server (APE) überhaupt mithalten kann. Bei den Messungen von Ziel 1 und 2 war Streamhub sogar schneller!

